Open Redirect漏洞除了拿來釣魚,還有呢?
Open Redirect常常是被Web開發者忽視的漏洞,這讓攻擊者可以驅使一般正常使用者在瀏覽網站時,將他們從一個正常網站中重定向到另一個Web Service,而這個Web Service就很有可能是惡意的。
這個漏洞常常被忽視的原因是,常常被認為是網路釣魚、網路詐騙、和其他社交工程手法相關的攻擊手段。但事實上,Open Redirect漏洞可以做的遠遠不僅限於網路釣魚,它可以和其他的攻擊手法(Attack Vector)結合,相互利用,例如SSRF、XSS、帳戶接管等等。
以下是一些HTTP Redirection的Status Code
一個簡單的範例如下:
reurl.php
$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);
這讓用戶可以用url的input重定向到另一個url,一般網路釣魚的手法是,將url的input輸入自己架設的惡意web service,如:http://example.com/reurl.php?url=http://attacker.com
並將此串發送給受害者,或是搭配CSRF一起利用。
除此之外,跟其他的攻擊手法結合,可以擴大它的攻擊面,另外,雖然有一些防禦策略可以使用,例如對可能導致重定向的參數進行檢查或設置filter,但仍存在許多bypass的方法,如:
%0d%0a
java%0d%0ascript:alert("XSS")
//
http://example.com/reurl.php?url=//attacker.com
//
http://example.com/reurl.php?url=http:attacker.com
\/
http://example.com/reurl.php?url=\/attacker.com
http://example.com/reurl.php?url=//attacker%00.com
@
http://example.com/reurl.php@attacker.com
XSS
在Open Redirect漏洞中,還可能允許攻擊者調用非HTTP Protocol的行為,這就允許使用javascript:
Protocol的基於DOM的重定向,這就可能觸發XSS,導致任意的Javascript程式執行,例如:
http://example.com/reurl.php?url=javascript:alert("XSS")
SSRF
利用SSRF漏洞,攻擊者可以輕易越過/取得防火牆或filter後面的內部內容,當需要bypass這些防護措施時,就可以利用Open Redirect重定向到domain中的內容。詳細利用可以參考下方的Case Study
Open Redirect on central.uber.com allows for account takeover [嚴重性:高]
Twitter lite(Android): Vulnerable to local file steal, Javascript injection, Open redirect [嚴重性:高]
[dev.twitter.com] XSS and Open Redirect Protection Bypass [嚴重性:中]